package rest;

import javax.ws.rs.DELETE;
import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

/**
 * 
 * @author
 */
@Path("/publicacion")
public class PublicacionSOA {

	/**
	 * Este método sirve para ingresar una nueva publicación, segun el rut de la
	 * persona se busca la id de este
	 * 
	 * @param id, corresponde al id de la persona a la cual se le añade  unapublicación
	 * @param descripcion, descripción de la nueva publicación
	 * @param monto, monto de la nueva publicación
	 * @return
	 * @throws PersistentException
	 */
	@POST
	@Path("/add")
	@Produces(MediaType.TEXT_PLAIN)
	public static String add(@FormParam("pub_mon") String pub_mon,
			@FormParam("pub_des") String pub_des,
			@FormParam("pers_rut") String pers_rut) {

		return negocio.PublicacionSOA.add(pub_mon, pub_des, pers_rut);
	}

	/**
	 * Este método sirve para borrar una publicación según su id
	 * 
	 * @param id
	 *            de publicación
	 * @return
	 * @throws PersistentException
	 */
	@DELETE
	@Path("/delete/{id}")
	public static String borrar(@PathParam("id") String id) {
		return negocio.PublicacionSOA.borrar(id);
	}
	/**
	 * 
	 * @param id numero
	 * @param campo 0 cambia monto, 1 cambia descripcion 
	 * @param new_valor nuevo valor
	 * @return
	 */
	@PUT
	@Path("/update")
	public static String update(@FormParam("id")  String id, 
			@FormParam("campo") int campo, 
			@FormParam("nuevo_valor") String new_valor) {

		return negocio.PublicacionSOA.update(id, campo, new_valor);
	}

	/**
	 * Este método sirve para buscar una publicación segpun su id
	 * 
	 * @param id
	 * @return
	 * @throws PersistentException
	 */
	@GET
	@Path("/find/{buscar}")
	@Produces(MediaType.TEXT_PLAIN)
	public static String find(@PathParam("buscar")  String buscar) {
		return negocio.PublicacionSOA.find(buscar);
	}

	/**
	 * Método que realiza una busqueda de todas las publicaciones existentes.
	 * 
	 * @return json almacena todos los registros encontrados
	 */
	@GET
	@Path("/findall/{buscar}")
	@Produces(MediaType.TEXT_PLAIN)
	public static String findall(String buscar) {
		return negocio.PublicacionSOA.findall(buscar);
	}
}
